/**
 * WebRTC 配置管理
 * 统一管理 ICE 服务器配置和其他 WebRTC 相关配置
 */

export interface IceServerConfig {
  urls: string | string[];
  username?: string;
  credential?: string;
}

/**
 * 获取 ICE 服务器配置
 * 优先使用环境变量配置的 ICE 服务器，否则使用默认的 Google STUN 服务器
 * 注意：ICE 服务器是直接连接的，不需要通过后端代理
 */
export const getIceServers = (): IceServerConfig[] => {
  // 如果环境变量配置了 ICE 服务器，使用环境变量的配置
  if (ICE_SERVERS && Array.isArray(ICE_SERVERS)) {
    return ICE_SERVERS as IceServerConfig[];
  }
  
  // 默认使用 Google 的公共 STUN 服务器
  return [
    { urls: 'stun:stun.l.google.com:19302' },
    { urls: 'stun:stun1.l.google.com:19302' },
    { urls: 'stun:stun2.l.google.com:19302' },
    // 如果需要 TURN 服务器，可以通过环境变量 VITE_ICE_SERVERS 配置
    // 例如：VITE_ICE_SERVERS='[{"urls":"turn:turn.example.com:3478","username":"user","credential":"pass"}]'
  ];
};

/**
 * WebRTC 连接配置
 */
export interface WebRtcConnectionConfig {
  iceCandidatePoolSize?: number;
  iceServers?: IceServerConfig[];
}

/**
 * 获取默认的 WebRTC 连接配置
 */
export const getDefaultWebRtcConfig = (): RTCConfiguration => {
  return {
    iceServers: getIceServers(),
    iceCandidatePoolSize: 10, // 预收集更多 ICE 候选
  };
};

import { API_BASE_URL, ICE_SERVERS } from '@/config/env';

/**
 * SRS API 配置
 * 注意：前端不再需要直接配置 SRS 地址，所有请求都通过后端代理
 */
export const SRS_CONFIG = {
  API_BASE: API_BASE_URL,
} as const;

/**
 * 获取 SRS API 地址（通过后端代理）
 * 注意：所有 SRS 请求都应该通过后端代理，而不是直接访问 SRS
 */
export const getSrsApiUrl = (path: string): string => {
  // 使用后端 API 地址，路径为 /api/webrtc/rtc/v1/publish 或 /api/webrtc/rtc/v1/play
  return `${SRS_CONFIG.API_BASE}/api/webrtc${path}`;
};

